Method and Apparatus for Adaptive Searching of Distributed Datasets

ABSTRACT

A first communication device comprising memory in which data is stored may receive a request packet from a second communication device, measure received signal strength for the request packet, and determine whether to perform the requested search of the data stored in the memory based on the received signal strength and the power at which the request packet was transmitted. The search request packet may comprise a request to search the data stored in the memory, and a transmit power field that indicates a power at which the request packet was transmitted. The determining may be based on a result of a comparison between the received signal strength and a threshold and/or based on a comparison of a relative power and a threshold. The relative power may be calculated utilizing the received signal strength and the power at which the packet was transmitted.

CLAIM OF PRIORITY

This patent application is a continuation of U.S. application Ser. No.13/267,640, filed Oct. 6, 2011, now U.S. Pat. No. 8,976,691, which makesreference to, claims priority to and claims benefit from U.S.Provisional Patent Application Ser. No. 61/404,513 filed on Oct. 6,2010.

The above stated application is hereby incorporated herein by referencein its entirety.

INCORPORATION BY REFERENCE

This patent application also makes reference to:

U.S. Provisional Patent Application Ser. No. 61/464,376 filed on Mar. 2,2011.

Each of the above stated applications is hereby incorporated herein byreference in its entirety.

FIELD OF THE INVENTION

Certain embodiments of the invention relate to wireless communications.More specifically, certain embodiments of the invention relate to amethod and apparatus for adaptive searching of distributed datasets.

BACKGROUND OF THE INVENTION

Conventional methods of searching distributed datasets are inefficientin terms of both resource usage and power consumption. Furtherlimitations and disadvantages of conventional and traditional approacheswill become apparent to one of skill in the art, through comparison ofsuch systems with some aspects of the present invention as set forth inthe remainder of the present application with reference to the drawings.

BRIEF SUMMARY OF THE INVENTION

An apparatus and/or method is provided for adaptive searching ofdistributed datasets, substantially as illustrated by and/or describedin connection with at least one of the figures, as set forth morecompletely in the claims.

These and other advantages, aspects and novel features of the presentinvention, as well as details of an illustrated embodiment thereof, willbe more fully understood from the following description and drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram depicting a plurality of spatially-distributed,resource-constrained devices.

FIG. 2 depicts an exemplary searching device and an exemplarydata-bearing device.

FIGS. 3A-3C depict an exemplary packet structure for searching adistributed dataset.

FIGS. 4A-4B depict an exemplary data structure stored in a data-bearingdevice.

FIG. 5 depicts an exemplary encoding scheme for searching a distributeddataset.

FIGS. 6A-6B depict an exemplary search performed in a data-bearingdevice.

FIGS. 6C-6D illustrates the use of weighting factors in generatingsearch scores.

FIGS. 7A-7C depict an exemplary user interface for searching adistributed dataset.

FIG. 8 is a flowchart depicting exemplary steps for link-power-awaresearching of a distributed dataset.

FIG. 9A is a flowchart depicting exemplary steps implemented by a devicethat is performing a search of a distributed dataset.

FIG. 9B is a flowchart depicting exemplary steps implemented by adata-bearing device in response to a received search request.

FIG. 10A is a flowchart depicting exemplary steps implemented by adata-bearing device in responding to a received search request.

FIG. 10B is a flowchart depicting exemplary steps implemented by adata-bearing device in responding to a received search request.

FIG. 11A illustrates exemplary steps performed by a responder in atwo-party arbitrated dialogue.

FIG. 11B illustrates exemplary steps performed by a requester in atwo-party arbitrated process.

FIG. 11C depicts an example of an arbitrated two-party dialogue, using asingle response channel.

DETAILED DESCRIPTION OF THE INVENTION

As utilized herein the terms “circuits” and “circuitry” refer tophysical electronic components (i.e. hardware) and any software and/orfirmware (“code”) which may configure the hardware, be executed by thehardware, and or otherwise be associated with the hardware. As utilizedherein, “and/or” means any one or more of the items in the list joinedby “and/or”. For example, “x and/or y” means any element of thethree-element set {(x), (y), (x, y)}. Similarly, for example, “x, y,and/or z” means any element of the seven-element set {(x), (y), (z), (x,y), (x, z), (y, z), (x, y, z)}. As utilized herein, the term “module”refers to functions than can be implemented in hardware, software,firmware, or any combination of one or more thereof. As utilized herein,the term “exemplary” means serving as a non-limiting example, instance,or illustration. As utilized herein, “e.g.,” introduces a list of one ormore non-limiting examples, instances, or illustrations.

FIG. 1 is a diagram depicting a plurality of spatially-distributed,resource-constrained devices. Shown in FIG. 1 is a first device 102,second devices 104 ₁-104 ₂₀, and search perimeters 106 ₁-106 ₃.

The first device 102 may comprise circuitry operable to transmit andreceive wireless signals in accordance with one or more wirelessprotocols. Exemplary protocols which may be supported by the device 102include the ISO 18000-7 protocol, and protocols described in theabove-incorporated U.S. Provisional Patent Application No. 61/464,376filed on Mar. 2, 2011. The first device 102 may also comprise circuitryoperable to implement a user interface such as the user interfacedescribed below with respect to FIGS. 5A-5C. Accordingly, the firstdevice 102 may be operable to generate and transmit search requests, andreceive and process search responses. When executing a search, the firstdevice 102 is referred to herein as a “searching device.” The firstdevice 102 may, for example and without limitation, be a laptopcomputer, a desktop computer, a tablet computer, a smart phone, aserver, a set-top box, a gateway, a meter or code reader, or maycomprise a combination of one or more such devices.

Each of the second devices 104 ₁-104 ₂₀ may comprise circuitry operableto transmit and receive wireless signals in accordance with one or morewireless protocols. Exemplary protocols which may be supported by thesecond devices 104 ₁-104 ₂₀ include the ISO 18000-7 standard, andprotocols described in the above-incorporated U.S. Provisional PatentApplication No. 61/464,376 filed on Mar. 2, 2011. Each of the seconddevices 104 ₁-104 ₂₀ may comprise circuitry operable to store data(e.g., in the form of delimited strings of characters). Accordingly, thesecond devices 104 ₁-104 ₂₀ are referred to herein as “data-bearingdevices.” Additionally, device 104 _(X) (X being an integer between 1and 20, inclusive) may comprise circuitry operable to search data storedon the device 104 _(X). One or more of the second devices 104 ₁-104 ₂₀may have relatively little memory, relatively little processing power,operate on battery power, and/or may otherwise be constrained in termsof one or more resources. The second devices 104 ₁-104 ₂₀ may, forexample, comprise RFID tags, smartcards, keyfobs, cellphones, portablemedia players, appliances, utility meters, etc.

The search perimeters 106 ₁-106 ₃ represents different “search areas”for the first device 102 corresponding to three different transmitpowers. That is, the device 102 may utilize a first transmit power T₁ tosearch devices within the first search perimeter 106 ₁, utilize a secondtransmit power T₂ to search devices within the second search perimeter106 ₂, and utilize a third transmit power T₃ to search devices withinthe third search perimeter 106 ₃, wherein T₃>T₂>T₁.

In operation, the first device 102 (the “searching device”) may desireto search at least a portion of the devices 104 ₁-104 ₂₀. The search maybe, for example, to find which one or more of the devices 104 ₁-104 ₂₀have a particular string (e.g., a group of one or more ASCII or UNICODEcharacters) stored in memory. The first device 102 may generate a searchrequest packet and transmit the search request packet. If the searchrequest packet is transmitted at power T₁, the search request packet maybe received by data-bearing devices 104 ₁-104 ₄. If the search requestpacket is transmitted at power T₂, the search request packet may bereceived by devices 104 ₁-104 ₁₂. If the search request packet istransmitted at power T₃, the search request packet may be received bydevices 104 ₁-104 ₂₀. Note that the above assumes signal propagationconditions in which there is no interference or physical obstructionsthat critically impair communications between the device 102 and one ormore of the devices 104 ₁-104 ₂₀.

The first device 102 may receive search response packets from one ormore of the devices 104 ₁-104 ₂₀. The device 102 may process theresponses, and may send one or more follow-up search request packets torefine and/or narrow the search results, and/or to acknowledgesuccessfully received search responses. The acknowledgment may comprisea batch acknowledgment where responses received from a plurality of thedevices 104 ₁-104 ₂₀ are acknowledged in a single packet.

Each of the devices 104 ₁-104 ₂₀ that receives the search request packetmay react and/or respond in accordance with instructions and/orparameters received in the search request packet. One or more of thedevices 104 ₁-104 ₂₀ may, for example, determine that a search of theirmemory is unnecessary, and/or that the search, or communication of thesearch results, would be too resource-intensive. Such devices may, forexample, ignore the search request and not respond to it. One or moreothers of the devices 104 ₁-104 ₂₀ may, for example, determine to searchtheir entire memory or one or more particular portions of their memory.Of the devices 104 ₁-104 ₂₀ that do perform a search of their memories,some may respond to the search and some may not. Those of the devices104 ₁-104 ₂₀ that do respond may generate and transmit one or moresearch response packets. The contents of the search response packet maybe determined, at least in part, by the parameters and/or instructionsin the received search request packet. The power at which the searchresponse is transmitted may be based, at least in part, on the receivedsignal strength of the search request packet and/or the contents of thesearch request packet.

For those of the devices 104 ₁-104 ₂₀ that perform the search, adecision to generate a search response packet may be based on a searchscore. A device 104 _(X) may generate a search score based on amathematical and/or logical comparison of a search string received in asearch request packet with one or more strings stored in memory of thedevice 104 _(X). In some instances, the search score may be based, atleast in part, on a weighting factor applied to one or more of thestrings stored in the memory of the device 104 _(X).

For those of the devices 104 ₁-104 ₂₀ that transmit a search response,when and/or on what channel they transmit the response may be based onthe search score. For example, devices having higher-scoring responsesmay be given priority to access the medium. Additionally oralternatively, a device 104 _(X) having a higher-scoring response maytransmit on a different time and/or frequency channel than a devicehaving a lower-scoring response.

A device 104 _(X) that transmitted a search response may listen for anacknowledgement that its response was received by the requestor. Thebehavior of the device 104 _(X) if it does not receive an acknowledgmentmay vary depending on, for example, instructions in the search requestpacket. For example, if the device 104 _(X) that transmitted a responsedoes not receive an acknowledgment, that device 104 _(X) may retransmitits response and/or may, for a period of time, ignore subsequentsearches from the same searching device.

FIG. 2 depicts an exemplary searching device and an exemplarydata-bearing device. Shown in FIG. 2 are details of an exemplary firstdevice 102 and details of an exemplary second device 104 _(X).

The CPU 204 may comprise circuitry operable to control operation of thefirst device 102. The CPU 204 may, for example, execute an operatingsystem and/or other programs such (e.g., programs that enable a userinterface of the device 102). The CPU 204 may generate one or morecontrol signals for controlling the operation of the device 102. The CPU204 may, for example, control a mode of operation of the device 102.

The CPU 214 may comprise circuitry operable to control operation of thesecond device 104 _(X). In some instances, the CPU 214 may besubstantially similar to the CPU 204. In instances that the device 104_(X) is resource-constrained, the CPU 204 may be less-complex (e.g.,comprise fewer gates, utilize less power, utilize less memory, etc.)than the CPU 214. In one embodiment, for example, the CPU 204 maycomprise a RISC or ARM processor, and the CPU 214 may comprise astate-machine having a relatively small number of states (e.g., fourstates).

The radio 207 may comprise a processor 208 and an analog front-end (AFE)209. The processor 208 may comprise circuitry operable to interface withthe AFE 209 to receive and transmit data, and to process received andto-be-transmitted data. For transmission, the processor 208 may beoperable to receive data from the CPU 204 and/or memory 206, packetizeand/or otherwise process the data to prepare it for transmission inaccordance with one or more wireless protocols, and output the data tothe AFE 209 for transmission. For reception, the processor 208 may beoperable to receive data via the AFE 209, process the received data andoutput received data to the memory 206 and/or the CPU 204. Exemplaryprotocols which may be supported by the second device 104 _(X) includethe ISO 18000-7 standard, and protocols described in theabove-incorporated U.S. Provisional Patent Application No. 61/464,376filed on Mar. 2, 2011.

The radio 217 may comprise a processor 218 and an analog front-end (AFE)219. The baseband processor 218 may comprise circuitry operable tointerface with the AFE 219 to receive and transmit data, and to processreceived and to-be-transmitted data. In some instances, the basebandprocessor 218 may be substantially similar to the baseband processor208. In instances that the device 104 _(X) is resource-constrained, thebaseband processor 218 may be less-complex (e.g., comprise fewer gates,utilize less power, utilize less memory, etc.) than the basebandprocessor 208. In one embodiment, for example, the baseband processor208 may be operable to implement more complex signal processingalgorithms than the baseband processor 218.

The analog front-end (AFE) 209 may comprise circuitry suitable forprocessing received and/or to-be-transmitted data in the analog domain.For transmission, the AFE 209 may receive digital data from the basebandprocessor 208, process the data to generate corresponding RF signals,and output the RF signals to the antenna 210. For reception, the AFE 209may receive RF signals from the antenna 210, process the RF signals togenerate corresponding digital data, and output the digital data to thebaseband processor 209. In some instances, the AFE 219 may besubstantially similar to the AFE 209. In instances that the device 104_(X) is resource-constrained, the AFE 219 may be less-complex (e.g.,comprise fewer gates, utilize less power, utilize less memory, etc.)than the AFE 209. In one embodiment, for example, the AFE 209 maycomprise a more-sensitive receiver, a more powerful transmitter than theAFE 219.

Circuitry of the memory 206 may comprise one or more memory cells andmay be operable to store data to the memory cell(s) and read data fromthe memory cell(s). The one or more memory cell may comprise one or morevolatile memory cells and/or one or more non-volatile memory cells.

Circuitry of the memory 216 may comprise one or more memory cells andmay be operable to read data from the memory cell(s) and/or store datato the memory cell(s). In some instances, the memory 216 may besubstantially similar to the memory 206. In instances that the device104 _(X) is resource-constrained, the memory 216 may be less-complex(e.g., comprise fewer gates, utilize less power, etc.) than the memory206.

Each of the antennas 210 and 220 may be operable to transmit and receiveelectromagnetic signals in one or more frequency bands. In an embodimentof the invention, the antennas 210 and 220 may be operable to transmitand receive signals in the ISM frequency band centered at 433.92 MHz.

In operation, a user of the device 102 may initiate a search by, forexample, utilizing the user interface described below with respect toFIGS. 7A-7C. Based on the user's input, a search request packet 230 maybe generated by the device 102 and transmitted via the antenna 210. Thedevice 104 _(X) may receive the search request packet 230 and determinewhether to perform the requested search, and whether to respond to thesearch request. In instances that the device 104 _(X) does decide torespond to the request, it may generate a search response packet 232,and transmit the search response packet 232 via the antenna 220. Thedevice 104 _(X) may also generate and transmit a follow-up searchrequest packet 234. The device 104 _(X) may respond to the follow-upsearch request with one or more additional search response packets 232.

FIGS. 3A-3C depict an exemplary packet structure for searching adistributed dataset. Shown in FIG. 3A is an exemplary structure of aninitial search request packet 230. Shown in FIG. 3B is an exemplarystructure of a follow-up search request packet 234. Shown in FIG. 3C isan exemplary structure of a search response packet 232.

The exemplary initial search request packet 230 comprises a header field302, a transmit power field 304, a search specification field 306, alevel-1 parameters field 308, and a level-2 parameters field 310.

The header field 302 may comprise protocol-specific data.

The transmit power field 304 may indicate (e.g., via a numerical value)the measured and/or estimated power at which the search request packet230 was transmitted by the searching device.

The search specification field 306 may comprise numerical and/orstring-based information that instruct the data-bearing devices as tohow a search is to be conducted. The search specification field 306 may,for example, indicate what data should be searched, what data should bereturned, when responses should be transmitted (e.g., respond to thecurrent search request packet or wait for a future search requestpacket), on what channel responses should be transmitted, a bit-mask formodifying search one or more search tokens and/or search results, and/orwhether the current packet is part of a new search or a continuation ofa search.

The level-1 parameters field 308 may comprise one or more search tokensfor which to search in the data-bearing devices. Each token may, forexample, comprise a number and/or a string.

The level-2 parameters field 310 may comprise one or more search tokensfor which to search in the data-bearing devices which found a match forthe token(s) in the level-1 parameters field. Each token may, forexample, comprise a number and/or a string.

The exemplary follow-up search request packet 234 comprises a headerfield 322, a transmit power field 324, a search specification field 326,a level-N parameters field 328, and a batch acknowledgment field 330.

The header field 322 may comprise protocol-specific data.

The transmit power field 324 may indicate (e.g., via a numerical value)the measured and/or estimated power at which the follow-up searchrequest packet 234 was transmitted by the searching device.

The search specification field 326 may comprise numerical and/orstring-based information that instruct the data-bearing devices as to,for example, what data should be searched, what data should be returned,when responses should be transmitted (e.g., respond to the currentsearch request packet or wait for a future search request packet), onwhat channel responses should be transmitted, and whether the currentpacket is part of a new search or a continuation of a search.

The level-N parameters field 328 may comprise one or more search tokensfor which to search in data-bearing devices which found a match for thetokens in the first N−1 parameters fields. In an exemplary embodiment ofthe invention, N=F+2 and F is an integer equal to the number follow-upsearch request packets 234 sent for a particular search. For example, Nmay be ‘3’ for the first follow-up search packet of a search.

The exemplary search response packet 232 may comprise a header field332, a transmit power field 334, and a return data field 336.

The header field 332 may comprise protocol-specific data.

The transmit power field 334 may indicate (e.g., via a numerical value)the measured and/or estimated power at which the search response packet232 was transmitted by the data-bearing device.

The return data field 336 may comprise information about the results ofthe search. For example, the return data field 336 transmitted by adevice 104 _(X) may comprise string(s) found in memory of the device 104_(X) that match or partially match one or more search tokens, thelocation in memory of the found string(s), and/or the search score(s)for the found string(s). The contents and/or format of the return datafield 336 may be determined, at least in part, by the searchspecification field 306 or 326 of the search request packet 230 or 234that resulted in the response packet 232 being generated andtransmitted.

FIGS. 4A-4B depict an exemplary data structure stored in a data-bearingdevice. Referring to FIG. 4A, the memory 216 comprises a buffer 402, alist 404, and a table 416.

The buffer 402 may store a search token for which the memory 216 is tobe searched. In FIG. 4A, the buffer can store a search token having upto J characters, where J is an integer.

The list 404 may store identifiers 406 ₁-406 _(N) which may correspondand/or be mapped to a table index and/or a memory address of thecorresponding strings 408 ₁-408 _(N) in the table 416. Each of theidentifiers 406 ₁-406 _(N) may comprise, for example, a number and/or astring of characters.

The table 416 may store strings 408 ₁-408 _(N). The strings may beindexed by the identifiers 406 ₁-406 _(N). Each string 408 _(n) (where nis an integer between 1 and N, inclusive) may comprise a plurality ofwords 410 and delimiters 412. In FIG. 4A, each of the strings 408 ₁-408_(N) comprises M words and a corresponding M delimiters, where M is aninteger, but the invention is not so limited. Each string 408 _(n) mayhave any number of words.

Referring to FIG. 4B, each of the words 410 ₁-410 _(M) may comprise aplurality of characters 420. For example, an exemplary word 410 _(m)(where m is an integer between 1 and M, inclusive) comprises Lcharacters 420 ₁-420 _(L). Each of the characters 420 may comprise aplurality of bits 422 and a weighting factor 424. In an exemplaryembodiment of the invention, characters may be encoded utilizing sixbits and a two-bit weighting factor 424. Additional details of such anencoding are described with respect to FIG. 5.

FIG. 5 depicts an exemplary encoding scheme for searching a distributeddataset. Shown in FIG. 5 is a portion 505 of a keypad. Just a portion ofthe keypad is shown for illustration, but the 6-bit encoding schemediscussed here can apply to any keypad having up to 2⁶ characters.Similarly, larger keypads can be accommodated by using more than sixbits and smaller keypads can be accommodated utilizing fewer than sixbits.

The depicted portion 504 comprises the keys 502 ₁-502 ₉. Shown on eachkey 502 _(C) (where C is an integer between 1 and 9) is the character506 corresponding to the key 502 _(C), the 6-bt encoding of the key 502_(C), and a relative physical distance 508 of the key 502 _(C) from areference key (here, the key 502 ₅).

The encoding 510 of each character is chosen such that the hammingdistance between two keys is proportional (either linearly of accordingto some higher-order polynomial) to the relative physical distancebetween the two keys. To illustrate, in the embodiment depicted in FIG.5, the hamming distance between key 502 ₅ and keys with relativedistance ‘1’ (i.e., keys 502 ₂, 502 ₃ 502 ₄, 502 ₆, 502 ₇, and 502 ₈) isless than 2, and the hamming distance between key 502 ₅ and keys withrelative distance ‘2’ (i.e., keys 502 ₁, and 502 ₉) is less than 4.

By encoding the characters such that the hamming distances between theencodings is proportional (either linearly of according to somehigher-order polynomial) to the relative physical distance between thecorresponding keys, spell-checking algorithms can utilizing the hammingdistances to quickly and efficiently correct for likely typographicalerrors resulting from accidentally hitting a nearby key. For example, auser may enter “BISS” and the spell-checking algorithm may first checkencodings corresponding to the smallest hamming distances. This may leadto the spellchecker suggesting “BIAS” and “BIDS” each of which differsfrom BISS by a hamming distance of only 1. Other possibilities such as“BINS” have a larger hamming distance and thus may be filtered out ormay be suggested after “BIAS” and “BIDS.”

FIGS. 6A-6B depict an exemplary search performed in a data-bearingdevice. Referring to FIG. 6A, there is shown a compare module 602, anexemplary string 408 _(n), and the buffer 402 which stores a token beingsearched for in the string 408 _(n).

The compare module 602 may be operable to compare the contents of thebuffer 402 to the portion of the string 408 _(n) in the window 604 togenerate the search score 606. The comparison may comprise, for example,exclusively-NORing the encoded-characters of the token with theencoded-characters of the string 408 _(n) that are currently in thewindow 604, and then summing the outputs of the XNOR operations.

FIG. 6B illustrates the value of the search score 606 for the depictedportion of the exemplary string 408 _(n). With reference to FIGS. 6A and6B, the string 408 _(n) is being searched for the token “token.” At time0, the characters “tuk_t” (where “_” represents a delimiter such as aspace) are in the window 604 and the search score 606 has a normalizedvalue of 3. At time 1, the characters “uk_to” are in the window 604, andthe search score 606 has a normalized value of 0. At time 2, thecharacters “k_tok” are in the window 604, and the search score 606 has anormalized value of 0. At time 3, the characters “_toke” are in thewindow 604, and the search score 606 has a normalized value of 0. Attime 4, the characters “token” are in the window 604, and the searchscore 606 has a normalized value of 5. And so forth until the entirestring 408 _(n) has been compared to the token.

FIG. 6C illustrates the use of a weighting factor in generating searchscores. As described above, each character in the strings 408 _(n) and408 _(n+1) may have one or more weighting bits appended to it. In anexemplary embodiment of the invention, the weights may be represented astwo bits. In FIG. 6C, the weight of each character is shown above thatcharacter. Also, each character of the search token may have one or moreweighting bits appended to it. In FIG. 6C, the weight of each tokencharacter is shown below that character.

In an exemplary embodiment of the invention, characters may beemphasized or de-emphasized based on an exclusive-NORing of theweighting factors. For example, each character in the search token mayhave a weight of “00,” and each character in the strings 408 _(n) and408 _(n+1) may have a weight of “00,” “01,” “10,” or “11.” A weightingfactor of “00” may emphasize a character, a weighting factor of “10” and“01” may be neutral, and a weighting factor of “11” may de-emphasize acharacter.

In FIGS. 6C-6D, words near the beginning of a string (toward the left ofthe drawing sheet) are weighted more heavily than words later in thestring. The search token, “token,” is found earlier in the string 408_(n) whereas “token” is found later in the string 408 _(n+1). If eachcharacter of the search token has a weight of ‘00,’ the characters of“token” in the string 408 _(n) each have a weight of ‘00,’ and each ofthe characters of “token” in string 408 _(n+1) have a weight of ‘11,’the search score for string 408 _(n) may be higher than the search scorefor the string 408 _(n+1).

In one embodiment of the invention, one or more characters of the searchtoken may be replaced by a wildcard character. Bits corresponding to awildcard character may be masked out when calculating the search scoreand, therefore, not factor into the search score.

FIGS. 7A-7C depict an exemplary user interface for searching adistributed dataset. Shown in FIG. 7A is a first window (or screen) 702of a graphical user interface (GUI) of a search program that performssearches of distributed datasets. The GUI may be run on, for example,the device 102 of FIGS. 1 and 2. The underlying search program withwhich the GUI interfaces may run on the device 102 as well, or may runon a host device in communication with the device 102. The first window702 comprises a search button 704, an exit button 706, a slider bar 708,a slider 710, a textbox 712, an edit button 714, and a clear button 716.

The slider bar 708 may provide a graphical representation of transmitpower. The farther to the right that the slider 710 is on the slider bar708, the higher the transmit power at which search packets will betransmitted. The position of the slider 710 may be configured manuallyby a user and/or automatically based on one or more computer-implementedalgorithms. Such algorithms may determine the position of the sliderdynamically during operation of the device on which the search programis running. Such algorithms may determine the position of the slider 710based, for example, on a known location of the user (e.g., through basestation triangulation, GPS, and/or user-entered data), external inputfrom one or more sensors (e.g., RF energy incident on the device 102),and/or input from other programs running on the device 102.

In operation, a user may launch the search program which, in turn,brings up the window 702. The user may activate (e.g., click, press orotherwise select) the clear button 716 to remove any persistentinformation from a previous search. The user may activate the editbutton 714 to bring up a cursor in the textbox 712. The user may typeone or more search tokens into the textbox 712. The slider 710 may beautomatically adjusted, and/or the user may manually adjust it, toselect a transmit power for the search. The user may then activate thesearch button 704 to initiate the search. Initiating the search may thenbring up the window or screen 720 shown in FIG. 7B. If the user desiresto exit the search program, the user may activate the exit button 706.

Referring to FIG. 7B, the window 720 comprises fields 722, 726, 728,734, and 736, buttons 724 and 738, and the slider bar 708 and slider710.

The field 722 may display the search token(s) being searched for as partof the current search.

The field 726 may display the unique identifiers (e.g., alphanumericnames and/or unique serial numbers) of devices 104 which have respondedto the search. The devices IDs may, for example, be listed in descendingorder according to search score. Each device ID may be a button orhyperlink which, when activated, may bring the user to the window (orscreen) 740 described below with respect to FIG. 7C.

The field 728 may display returned search data. In the embodiment shown,the returned search data is the strings in which matches (indicated bysolid underlining 730), and partial matches (indicated by dashedunderlining 732), to the search token were found.

The field 734 may display the status of the search. For example, thefield 734 may display a first message while the search is in-progressand a second message when the search has completed. The field 735 mayalso display the amount of time for the search.

The slider bar 708 and slider 710 may be as described above with respectto FIG. 7A. In an embodiment of the invention, the search may beadjusted manually and/or automatically while the search is in-progress.For example, if too many results are coming in, the slider 710 may moveto the left during a search.

The field 736 may provide a brief summary of the search results. Thestop button 738 may terminate an in-progress search. The button 724 maystop a search and return the user to the window 702 described above withrespect to FIG. 7B.

Referring to FIG. 7C, the window 740 comprises fields 742 and 744, andbuttons 746 and 748. The field 742 displays the ID of the device forwhich search results are being displayed in field 744. The field 744displays data received search result information. The displayed data maybe directly from the data-bearing device (“Device B” in FIG. 7C) or maybe downloaded from an external source (e.g., a server) where the data isstored. The button 746, when activated, may return the user to thewindow 720 described above with respect to FIG. 7B. The button 748 mayreturn the user to the window 702 described above with respect to FIG.7A.

FIG. 8 is a flowchart depicting exemplary steps for link-power-awaresearching of a distributed dataset. In step 804, after start step 802, asearching device (e.g., device 102) may determine a desired searchradius. The determination may be made based on, for example and withoutlimitation, past search results, a location of the searching device, thedata to be searched for, and/or a variety of other factors.

In step 806, the searching device may transmit a search request packet.The search request packet may comprise a field (e.g., the field 304)that indicates the transmit power (T_(SD)) at which the search requestpacket was transmitted.

In step 808, a data-bearing device (e.g., device 104 _(X)) may receivethe search request packet and measure the received signal strength (RSS)of the search request packet.

In step 812, data-bearing device compares the RSS to a minimum receivedpower threshold (R_(DBD) _(_) _(MIN)). The minimum received powerthreshold may, for example, have been configured based on one or moreparameters such as, for example, the location of the data-bearingdevice, the type of data stored in the data-bearing device, the searchspecification and/or parameters of the received search request packet,and/or the total and/or remaining charge on a battery of thedata-bearing device. If the RSS is below R_(DBD) _(_) _(MIN), then theexemplary steps may advance to step 814, and the data-bearing device maystop processing the search request. If the RSS is above or equal toR_(DBD) _(_) _(MIN), then the exemplary steps may advance to step 816.

In step 816, the data-bearing device may calculate a relative power(R_(DBD) _(_) _(REL)) for the received search packet. The relative powermay be calculated by, for example, subtracting RSS from T_(SD).

In step 818, the data bearing device may utilize R_(DBD) _(_) _(REL) todetermine a transmit power (T_(DBD)) that would be required for aresponse from the data-bearing device to reach the searching device.

In step 820, the transmit power required to respond to the searchrequest may be compared to a maximum power at which the data-bearingdevice is capable and/or permitted to transmit (T_(DBD) _(_) _(MAX)).T_(DBD) _(_) _(MAX) may, for example, be determined based on a sizeand/or charge of a battery of the data-bearing device, based on alocation of the data-bearing device, based on the type of data stored inthe data bearing device, based on a search specification and/or searchparameters of the received search request, and/or one or more otherparameters. If T_(DBD) is above or T_(DBD) _(_) _(MAX), then theexemplary steps may advance to step 822, and the data-bearing device maystop processing the search request. If T_(DBD) is below or equal toT_(DBD) _(_) _(MAX), then the exemplary steps may advance to step 824,and the data-bearing device may continue processing the search request.

FIG. 9A is a flowchart depicting exemplary steps implemented by a devicethat is performing a search of a distributed dataset. The exemplarysteps depict a three-level search for illustration, but the invention isnot limited to any particular number of search levels.

In step 904, after start step 902, a searching device (e.g., device 102)may formulate a three-level search. For example, the searching devicemay want to find data-bearing devices that have the followingcharacteristics: (1) “group”=“1234,” (2) “subgroup”=“5678;” and (3)“cookies”=“ABC” is stored in memory.

In step 906, the searching device may generate an initial search requestpacket (ISRP) comprising a level-1 parameter field indicating that thesearching device is searching for data-bearing devices in which thestring with the identifier “group” has the value “1234,” and a level-2parameter field indicating that the searching device is searching fordata-bearing devices in which the string with the identifier “subgroup”has the value “5678.” The search specification field of the ISRP mayindicate that a follow-up search request packet (FSRP) will be sent andresponses should be held off until after received of the FSRP.

In step 908, the ISRP may be transmitted at a transmit power T_(SD). Thetransmit power T_(SD) may, for example, be determined as described inone or more of FIGS. 7A, 7B, 7C, and 8.

In step 910, the searching device may receive search responses.

In step 912, the searching device may determine whether it wants toreceive additional responses. If not, the exemplary steps may advance tostep 920 and the searching device may process the received responses. Ifso, then the exemplary steps may advance to step 914.

In step 914, the FSRP may be generated. The FSRP may comprise a level-3parameter field indicating that the searching device is searching fordata-bearing devices in which a string with a string ID of “cookies”contains the substring “ABC.” The search specification field of the FSRPmay indicate the manner in which responses should be formatted and/orsent. In scenarios in which there are more than three levels to asearch, steps 914-918 may be stepped-through multiple times and thesearch level associated with step 914 may be incremented on eachiteration through steps 914-918. For example, for a four-level search,step 914 may correspond to level-3 parameters (as shown) for the firstiteration through steps 914-918, and may correspond to level-4parameters on the second iteration through steps 914-918.

In step 916, the searching device may transmit an additional FSRP. TheFSRP may acknowledge the successfully-received responses and mayinstruct the data-bearing devices on if and/or how to respond. Forexample, the FSRP may instruct devices whose responses were sent but notacknowledged to retransmit their responses. Additionally oralternatively, the FSRP may instruct devices who were unable to transmita response (e.g., due to inability to gain access to the medium) to makeanother attempt to send their responses.

In step 918, the searching device may receive the additional responsesand the exemplary steps may return to step 912.

FIG. 9B is a flowchart depicting exemplary steps implemented by adata-bearing device in response to a received search request. Whereasthe flowchart of FIG. 9A illustrates an exemplary search from theperspective of the searching device, the flowchart of FIG. 9Billustrates exemplary steps of the same search from the perspective of adata-bearing device.

In step 942, after start step 940, the data-bearing device (e.g., device104 _(X)) may receive the ISRP and parse it to obtain the level-1 tokens“group” and “1234,” and level-2 tokens “subgroup” and “5678.”

In step 944, the data-bearing device may search for the token “group” inthe list 404 and if, found search for the token “1234” in thecorresponding string 408 _(n). A search score may be generated based onwhether “group” was found in list 404, and if and/or where “1234” wasfound in string 408 _(n).

In step 946, if the level-1 search score is less than a first threshold,then, in step 946, the data-bearing device may stop processing the ISRPand may not listen to subsequent packets of the current search.Conversely, if the level-1 search score is greater than the firstthreshold, the exemplary steps may advance to step 950. The firstthreshold may, for example, be determined based on the searchspecifications of the ISRP.

In step 950, the data-bearing device may search for the level-2 tokensand generate a search score.

In step 952, if the level-2 search score is less than a secondthreshold, then, in step 948, the data-bearing device may stopprocessing the ISRP and may not listen to subsequent packets of thecurrent search. Conversely, if the level-2 search score is greater thanthe second threshold, the exemplary steps may advance to step 964. Thesecond threshold may, for example, be determined based on the searchspecifications of the ISRP. The second threshold may or may not be thesame as the first threshold.

In step 960, the data-bearing device may generate a search responsepacket. The contents and/or format of the return data field may bebased, for example, on one or more search specification fields of thereceived ISRP and FSRP. When and/or on what channel the response istransmitted may be based, for example, on one or more searchspecification fields of the received ISRP and FSRP.

In step 962, the response packet may be transmitted at a transmit powerT_(DBD).

In step 964, if the search specification(s) of the ISRP and/or FSRPinstructed the data-bearing device that it should not wait for one ormore additional FSRPs, the exemplary steps may advance to step 966 andthe search may be complete.

Returning to step 964, if the search specification(s) of the ISRP and/orFSRP instructed the data-bearing device that it should wait for one ormore additional FSRPs, then the exemplary steps may advance to step 968.

In step 968, the data-bearing device may receive a next FSRP. Inscenarios in which there are more than three levels to a search, steps960-973 may be stepped-through multiple times, and the number of theFSRP received in step 968 may be incremented on each iteration throughsteps 960-973. For example, for a four-level search, second FSRPcomprising level-3 search parameters may be received in a firstiteration of step 968, and a third FSRP comprising level-4 searchparameters may be received in a second iteration of step 968.

In step 970, if the response transmitted in step 962 is acknowledged inthe second FSRP, if the FSRP instructs the data-bearing device that thesearch is complete, and/or if some other event (e.g., a timeout) signalsthe end of the current search, then the exemplary steps may advance tostep 966.

Returning to step 970, if the second FRSP does not acknowledge theresponse transmitted in step 962, then steps may proceed to step 971.

In step 971, the data-bearing device may search for the level-3parameter(s) and generate a search score. In scenarios in which thereare more than three levels to a search, one or more of steps 960-973 maybe executed multiple times, and the search level associated with step971 may be incremented on each iteration of step 971. For example, for afour-level search, step 971 may correspond to level-3 parameters (asshown) for the first iteration of step 971, and may correspond tolevel-4 parameters on the second iteration of step 971.

In step 973, if the level-3 search score is less than a third threshold,then the exemplary steps may advance to step 964. Conversely, if thelevel-3 search score is greater than the third threshold, the exemplarysteps may advance to step 960. The third threshold may, for example, bedetermined based on the search specifications of the FSRP. The thirdthreshold may or may not be the same as one or both of the firstthreshold and the second threshold. In scenarios in which there are morethan three levels to a search, one or more of steps 960-973 may beexecuted multiple times, and the search level associated with step 973may be incremented on each iteration of step 973. For example, for afour-level search, step 973 may correspond to level-3 parameters (asshown) for the first iteration of step 973, and may correspond tolevel-4 parameters on the second iteration of step 973.

FIG. 10A is a flowchart depicting exemplary steps implemented by adata-bearing device in responding to a received search request. In step1002, the data-bearing device (e.g., device 104 _(X)) may be operatingin a mode in which it is idle and listening. Upon the data-bearingdevice receiving an initial search request packet (ISRP) the exemplarysteps may proceed to step 1004.

In step 1004, the data-bearing device may compare one or more searchtokens to its memory contents, and generate a search score.

In step 1006, the data-bearing device may compare the search score to afirst threshold. If the search score is greater than or equal to a firstthreshold, the exemplary steps may proceed to step 1014.

In step 1014, the data-bearing device may contend for access to themedium during a first time interval. The medium may, for example, be theair and the data-bearing device may be contending for access to afrequency channel in the ISM band centered at 433.92 MHz.

In step 1020, if the data-bearing device successfully obtains access tothe medium, then, in step 1028, the data-bearing device may transmit theresponse packet during the first time interval.

Returning to step 1020, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1016, the data-bearing devicemay contend for access to the medium during a second time intervaloccurring after the first time interval. If the data-bearing devicesuccessfully obtains access to the medium, then, in step 1028, thedata-bearing device may transmit the response packet during the secondtime interval.

Returning to step 1022, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1018, the data-bearing devicemay contend for access to the medium during a third time intervaloccurring after the second time interval. If the data-bearing devicesuccessfully obtains access to the medium, then, in step 1028, thedata-bearing device may transmit the response packet during the thirdtime interval.

Returning to step 1024, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1026, the data-bearing devicemay cease attempting to access the medium and/or may try to access themedium on a different channel.

Returning to step 1006, if the search score is less than the firstthreshold, then in step 1008 the search score may be compared to asecond threshold. If the score is greater than or equal to the secondthreshold, then the exemplary steps may proceed to step 1016.

Returning to step 1008, if the search score is less than the secondthreshold, then in step 1010 the search score may be compared to a thirdthreshold. If the score is greater than or equal to the third threshold,then the exemplary steps may proceed to step 1018. If the score is lessthan the third threshold, then, in step 1012, it may be determined thata response packet should not be sent.

FIG. 10B is a flowchart depicting exemplary steps implemented by adata-bearing device in responding to a received search request. In step1052, the data-bearing device (e.g., device 104 _(X)) may be operatingin a mode in which it is idle and listening. Upon the data-bearingdevice receiving an initial search request packet (ISRP) the exemplarysteps may proceed to step 1054.

In step 1054, the data-bearing device may compare one or more searchtokens to its memory contents, and generate a search score.

In step 1056, the data-bearing device may compare the search score to afirst threshold. If the search score is greater than or equal to a firstthreshold, the exemplary steps may proceed to step 1064.

In step 1064, the data-bearing device may contend for access to themedium on a first channel. The medium may, for example, be the air, andthe first channel may be in, for example and without limitation, the ISMband centered at 433.92 MHz.

In step 1070, if the data-bearing device successfully obtains access tothe medium, then, in step 1078, the data-bearing device may transmit theresponse packet on the first channel.

Returning to step 1070, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1066, the data-bearing devicemay contend for access to the medium on a second channel. If thedata-bearing device successfully obtains access to the medium, then, instep 1078, the data-bearing device may transmit the response packet onthe second channel.

Returning to step 1072, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1068, the data-bearing devicemay contend for access to the medium on a third channel. If thedata-bearing device successfully obtains access to the medium, then, instep 1078, the data-bearing device may transmit the response packet onthe third channel.

Returning to step 1074, if the data-bearing device does not successfullyobtain access to the medium, then, in step 1076, the data-bearing devicemay cease attempting to access the medium and/or may try to access themedium during a different time interval.

Returning to step 1056, if the search score is less than the firstthreshold, then in step 1058 the search score may be compared to asecond threshold. If the score is greater than or equal to the secondthreshold, then the exemplary steps may proceed to step 1066.

Returning to step 1058, if the search score is less than the secondthreshold, then in step 1060 the search score may be compared to a thirdthreshold. If the score is greater than or equal to the third threshold,then the exemplary steps may proceed to step 1068. If the score is lessthan the third threshold, then, in step 1012, it may be determined thata response packet should not be sent.

FIGS. 11A-11C illustrate exemplary steps for an arbitrated two-partydialogue. Table 1 below depicts exemplary parameters utilized in thetwo-party dialogue process.

TABLE 1 Arbitrated Two-Party Dialogue Parameters Data TransportParameter Description Link Layer Addressing Responders are hosts thathave N/A successfully resolved the requester's addressing parameterResponse Completion Responses must complete by T_(C) Timeout this point,following completion of the request. T_(CA) is derived from T_(C) byeach responder: T_(CA) ≦ T_(C) − T_(RESP) (Response Duration) ResponseChannel List Physical Layer Channel ID(s) Channel for the responsesQueue Response Guard Time CSMA Process Guard Time T_(GD) (Default)

FIG. 11A illustrates exemplary steps 1102-1118 performed by a responder(e.g., an endpoint 104) in an arbitrated two-party dialogue. FIG. 11Billustrates exemplary steps 1150-1168 performed by a requester (e.g., anbase station 102) in an arbitrated two-party dialogue. FIG. 11C depictsan example of an arbitrated two-party dialogue, using a single responsechannel. The request provides the T_(C) parameter, and respondersindependently derive T_(CA), T_(RESP). FIGS. 11A-11C refer to global andlocal addressing. The first request of the two-party dialogue containsglobal addressing. In an exemplary embodiment of the invention, hosts(e.g., one or more of endpoints 104 ₁-104 ₂₀) addressed via globaladdressing shall enter the arbitrated process, and they shall continuethe process until it is terminated. In an exemplary embodiment of theinvention, all requests in the series may contain local addressing. Inan exemplary embodiment of the invention, hosts (e.g., one or more ofendpoints 104 ₁-104 ₂₀) from the pool of global addressees may enter theresponse window that follows each request if they pass the localaddressing requirements.

In an exemplary embodiment of the invention, a first communicationdevice (e.g., device 104 _(X)) comprising memory (e.g., memory 216) inwhich data is stored (e.g., as shown in FIGS. 4A and 4B) may receive arequest packet (e.g., packet 230) from a second communication device(e.g., device 102), measure received signal strength for the requestpacket, and determine whether to perform the requested search of thedata stored in the memory based on the received signal strength and thepower at which the request packet was transmitted. The search requestpacket may comprise a request to search the data stored in the memory,and a transmit power field (e.g., field 304) that indicates a power atwhich the request packet was transmitted. The determining may be basedon a result of a comparison between the received signal strength and athreshold. The determining may be based on a comparison of a relativepower and a threshold. The relative power may be calculated utilizingthe received signal strength and the power at which the packet wastransmitted. The relative power may be calculated by subtracting thereceived signal strength from the power at which the packet wastransmitted.

The first communication device may generate and transmit a responsepacket (e.g., packet 232) in response to the request packet. Theresponse packet may comprise a transmit power field (e.g., field 324)that indicates a power at which the response packet is transmitted. Theresponse packet may comprise a return data field (e.g., field 336). Thecontents and/or format of the return data field may be determined by asearch specification field (e.g., field 306) of the request packet. Thefirst communication device may perform the search by comparing a searchtoken to the data stored in the memory. The first communication devicemay generate a search score that indicates the number of matches and/orpartial matches of the search token found in the data stored in thememory. The first communication device may perform the search bycomparing a search token to the data stored in the memory. The firstcommunication device may generate a search score that indicates thelocation of matches and/or partial matches of the search token found inthe data stored in the memory.

The first communication device may determine when to transmit aparticular response packet based on a search score corresponding to thatresponse packet. The first communication device may determine a channelon which to transmit a particular response packet based on a searchscore corresponding to that response packet. The data stored in thememory may be organized into one or more strings of characters, and aweighting factor (e.g., weighting factor 424) may be appended to each ofthe characters. The weighting factor for a particular character may bedetermined based on the position of the particular character in the oneor more strings.

In an embodiment of the invention, a first communication device (e.g.,device 104) may transmit a first search request packet (e.g., packet230) comprising a transmit power field (e.g., field 304), wherein thetransmit power field indicates a power at which the search requestpacket is transmitted. The first communication device may receive aplurality of search response packets from a plurality of secondcommunication devices. The first communication device may transmit asecond search request packet comprising a batch acknowledgment field(e.g., field 330), wherein the batch acknowledgment field acknowledgesreceipt of the plurality of search response packets from the pluralityof second communication devices. The first communication device maygenerate a graphical user interface via which a user of the firstcommunication device can manually adjust the power at which the searchrequest packet is transmitted. The first search request packet maycomprise a search specification field for instructing a data-bearingdevice on how to format a search response packet, on when to send asearch response packet, and on what channel to transmit a searchresponse packet.

The search request packet may communicate a minimum received powerthreshold. The minimum received power threshold may communicate to anydata-bearing device receiving the search request packet that, if itreceives the search request packet at a signal strength below theminimum power threshold, it should not respond to the search requestpacket. The first search request packet may comprise a search parametersfield (e.g., field 308) that contains a string identifier and a searchtoken. The first communication device may encode characters of a searchtoken such that a hamming distance between the encoding of any twocharacters is proportional to the physical distance between thecorresponding two keys of a keypad of the first communication device.

Other embodiments of the invention may provide a non-transitory computerreadable medium and/or storage medium, and/or a non-transitory machinereadable medium and/or storage medium, having stored thereon, a machinecode and/or a computer program having at least one code sectionexecutable by a machine and/or a computer, thereby causing the machineand/or computer to perform the steps as described herein for adaptivesearching of distributed datasets.

Accordingly, the present invention may be realized in hardware,software, or a combination of hardware and software. The presentinvention may be realized in a centralized fashion in at least onecomputing system, or in a distributed fashion where different elementsare spread across several interconnected computing systems. Any kind ofcomputing system or other apparatus adapted for carrying out the methodsdescribed herein is suited. A typical combination of hardware andsoftware may be a general-purpose computing system with a program orother code that, when being loaded and executed, controls the computingsystem such that it carries out the methods described herein. Anothertypical implementation may comprise an application specific integratedcircuit or chip.

The present invention may also be embedded in a computer programproduct, which comprises all the features enabling the implementation ofthe methods described herein, and which when loaded in a computer systemis able to carry out these methods. Computer program in the presentcontext means any expression, in any language, code or notation, of aset of instructions intended to cause a system having an informationprocessing capability to perform a particular function either directlyor after either or both of the following: a) conversion to anotherlanguage, code or notation; b) reproduction in a different materialform.

While the present invention has been described with reference to certainembodiments, it will be understood by those skilled in the art thatvarious changes may be made and equivalents may be substituted withoutdeparting from the scope of the present invention. In addition, manymodifications may be made to adapt a particular situation or material tothe teachings of the present invention without departing from its scope.Therefore, it is intended that the present invention not be limited tothe particular embodiment disclosed, but that the present invention willinclude all embodiments falling within the scope of the appended claims.

What is claimed is:
 1. A method comprising: in a first communicationdevice comprising memory in which data is stored: receiving a requestpacket from a second communication device, wherein said request packetcomprises: a request to search said data stored in said memory; and atransmit power field that indicates a power at which said request packetwas transmitted; measuring a received signal strength for said requestpacket; and determining whether to perform said search of said datastored in said memory based on said received signal strength and saidpower at which said request packet was transmitted.
 2. The method ofclaim 1, wherein said determining is based on a result of a comparisonbetween said received signal strength and a threshold.
 3. The method ofclaim 1, wherein: said determining is based on a comparison of arelative power and a threshold; and said relative power is calculatedutilizing said received signal strength and said power at which saidpacket was transmitted.
 4. The method of claim 3, wherein said relativepower is calculated by subtracting said received signal strength fromsaid power at which said packet was transmitted.
 5. The method of claim1, the method comprising: in said first communication device: generatinga response packet in response to said request packet wherein saidresponse packet comprises a transmit power field that indicates a powerat which said response packet is transmitted; and transmitting saidresponse packet.
 6. The method of claim 5, wherein: said response packetcomprises a return data field; and the contents and/or format of saidreturn data field is determined by a search specification field of saidrequest packet.
 7. The method of claim 1, the method comprising: in saidfirst communication device: performing said search by comparing a searchtoken to said data stored in said memory; and generating a search scorethat indicates the number of matches and/or partial matches of saidsearch token found in said data stored in said memory;
 8. The method ofclaim 1, the method comprising: in said first communication device:performing said search by comparing a search token to said data storedin said memory; and generating a search score that indicates thelocation of matches and/or partial matches of said search token found insaid data stored in said memory.
 9. The method of claim 1, the methodcomprising: in said first communication device: determining when totransmit a particular response packet based on a search scorecorresponding to that response packet.
 10. The method of claim 1, themethod comprising: in said first communication device: determining achannel on which to transmit a particular response packet based on asearch score corresponding to that response packet.
 11. The method ofclaim 1, wherein: said data stored in said memory is organized into oneor more strings of characters; and a weighting factor is appended toeach of said characters.
 12. The method of claim 11, wherein saidweighting factor for a particular character is determined based on theposition of said particular character in said one or more strings.
 13. Amethod comprising: in a first communication device: transmitting a firstsearch request packet comprising a transmit power field, wherein saidtransmit power field indicates a power at which said search requestpacket is transmitted; receiving a plurality of search response packetsfrom a plurality of second communication devices; transmitting a secondsearch request packet comprising a batch acknowledgment field, whereinsaid batch acknowledgment field acknowledges receipt of said pluralityof search response packets from said plurality of second communicationdevices.
 14. The method of claim 13, the method comprising: generating agraphical user interface via which a user of the first communicationdevice can manually adjust said power at which said search requestpacket is transmitted.
 15. The method of claim 13, wherein said firstsearch request packet comprises a search specification field forinstructing a data-bearing device on how to format a search responsepacket.
 16. The method of claim 13, wherein said first search requestpacket comprises a search specification field for instructing adata-bearing device on when to send a search response packet.
 17. Themethod of claim 13, wherein said first search request packet comprises asearch specification field for instructing a data-bearing device on whatchannel to transmit a search response packet.
 18. The method of claim13, wherein: said search request packet communicates a minimum receivedpower threshold; and said minimum received power threshold communicatesthat, if the search request packet is received at a signal strengthbelow the minimum power threshold, the search should not be respondedto.
 19. The method of claim 13, the method comprising: in said firstcommunication device: encoding characters of a search token such that ahamming distance between the encoding of any two characters isproportional to the physical distance between the corresponding two keysof a keypad of said first communication device.
 20. One or more circuitscomprising a memory in which data is stored, wherein said one or morecircuits are operable to: receive a request packet comprising a requestto search said data stored in said memory, and a transmit power fieldthat indicates a power at which said request packet was transmitted;measure a received signal strength for said request packet; anddetermine whether to perform said search of said data stored in saidmemory based on said received signal strength and said power at whichsaid request packet was transmitted.